home *** CD-ROM | disk | FTP | other *** search
/ Game Programming in C++ - Start to Finish / GameProgrammingS.iso / developer_install / CEGUISDK-0.4.1-VC6-Native.exe / {app} / include / CEGUITexture.h < prev    next >
Encoding:
C/C++ Source or Header  |  2005-06-04  |  4.3 KB  |  140 lines

  1. /************************************************************************
  2.     filename:     CEGUITexture.h
  3.     created:    21/2/2004
  4.     author:        Paul D Turner
  5.     
  6.     purpose:    Defines abstract interface for texture objects.  Texture
  7.                 objects are created & destroyed by the Renderer.
  8. *************************************************************************/
  9. /*************************************************************************
  10.     Crazy Eddie's GUI System (http://www.cegui.org.uk)
  11.     Copyright (C)2004 - 2005 Paul D Turner (paul@cegui.org.uk)
  12.  
  13.     This library is free software; you can redistribute it and/or
  14.     modify it under the terms of the GNU Lesser General Public
  15.     License as published by the Free Software Foundation; either
  16.     version 2.1 of the License, or (at your option) any later version.
  17.  
  18.     This library is distributed in the hope that it will be useful,
  19.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  20.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  21.     Lesser General Public License for more details.
  22.  
  23.     You should have received a copy of the GNU Lesser General Public
  24.     License along with this library; if not, write to the Free Software
  25.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  26. *************************************************************************/
  27. #ifndef _CEGUITexture_h_
  28. #define _CEGUITexture_h_
  29.  
  30. #include "CEGUIBase.h"
  31. #include "CEGUIString.h"
  32.  
  33. // Start of CEGUI namespace section
  34. namespace CEGUI
  35. {
  36. /*!
  37. \brief
  38.     Abstract base class specifying the required interface for Texture objects.
  39.  
  40.     Texture objects are created via the Renderer.  The actual inner workings of any Texture object
  41.     are dependant upon the Renderer (and underlying API) in use.  This base class defines the minimal
  42.     set of functions that is required for the rest of the system to work.  Texture objects are only
  43.     created through the Renderer object's texture creation functions.
  44. */
  45. class CEGUIEXPORT Texture
  46. {
  47. public:
  48.     /*************************************************************************
  49.         Abstract Interface
  50.     *************************************************************************/
  51.     /*!
  52.     \brief
  53.         Returns the current pixel width of the texture
  54.  
  55.     \return
  56.         ushort value that is the current width of the texture in pixels
  57.     */
  58.     virtual    ushort    getWidth(void) const = 0;
  59.  
  60.  
  61.     /*!
  62.     \brief
  63.         Returns the current pixel height of the texture
  64.  
  65.     \return
  66.         ushort value that is the current height of the texture in pixels
  67.     */
  68.     virtual    ushort    getHeight(void) const = 0;
  69.  
  70.  
  71.     /*!
  72.     \brief
  73.         Loads the specified image file into the texture.  The texture is resized as required to hold the image.
  74.  
  75.     \param filename
  76.         The filename of the image file that is to be loaded into the texture
  77.  
  78.     \param resourceGroup
  79.         Resource group identifier to be passed to the resource provider when loading the image file.
  80.  
  81.     \return
  82.         Nothing.
  83.     */
  84.     virtual void    loadFromFile(const String& filename, const String& resourceGroup) = 0;
  85.  
  86.  
  87.     /*!
  88.     \brief
  89.         Loads (copies) an image in memory into the texture.  The texture is resized as required to hold the image.
  90.  
  91.     \param buffPtr
  92.         Pointer to the buffer containing the image data
  93.  
  94.     \param buffWidth
  95.         Width of the buffer (in 0xAARRGGBB pixels)
  96.  
  97.     \param buffHeight
  98.         Height of the buffer (in 0xAARRGGBB pixels)
  99.  
  100.     \return
  101.         Nothing.
  102.     */
  103.     virtual void    loadFromMemory(const void* buffPtr, uint buffWidth, uint buffHeight) = 0;
  104.  
  105.  
  106.     /*!
  107.     \brief
  108.         Return a pointer to the Renderer object that created and owns this Texture
  109.  
  110.     \return
  111.         Pointer to the Renderer object that owns the Texture
  112.     */
  113.     Renderer*    getRenderer(void) const            {return d_owner;}
  114.  
  115.  
  116. protected:
  117.     /*************************************************************************
  118.         Construction and Destruction
  119.     *************************************************************************/
  120.     /*!
  121.     \brief
  122.         Constructor for Texture base class.  This is never called by client code.
  123.     */
  124.     Texture(Renderer* owner) : d_owner(owner) {}
  125.  
  126. public:        // luabind compatibility
  127.     /*!
  128.     \brief
  129.         Destructor for Texture base class.  This is never called by client code.
  130.     */
  131.     virtual ~Texture(void) {}
  132.  
  133. private:
  134.     Renderer* d_owner;        //<! Renderer object that created and owns this texture
  135. };
  136.  
  137. } // End of  CEGUI namespace section
  138.  
  139. #endif    // end of guard _CEGUITexture_h_
  140.